共计 919 个字符,预计需要花费 3 分钟才能阅读完成。
什么是栈结构?
栈(Stack)又称先进后出(Last In First Out)的线性表简称LIFO
结构,栈结构包含栈顶和栈底。
栈顶:插入和删除的一端;
栈底:不会有任何操作的一端;
不含任何数据元素的栈称为空栈;
栈的插入操作,叫做进栈,也称压栈,入栈
栈的删除操作,叫做出栈,也有的叫做弹栈
代码实现
import java.util.Arrays;
import java.util.EmptyStackException;
public class MyFirstStack<T> {
private T[] props;
private int size = 0;
private static final int INIT_CAPACITY = 16;
public MyFirstStack() {
props = (T[]) new Object[INIT_CAPACITY];
}
public void push(T elem) {
ensureCapacity();
props[size++] = elem;
}
public T pop() {
if (size == 0)
throw new EmptyStackException();
int tempSize = --size;
T t = props[tempSize];
props[tempSize] = null;
return t;
}
private void ensureCapacity() {
if (props.length <= size) {
System.out.println("扩容");
props = Arrays.copyOf(props, 2 * size + 1);
}
}
}
class MyStackDemo {
public static void main(String[] args) {
MyFirstStack<String> stringMyStack = new MyFirstStack<>();
for (int i = 0; i < 100; i++) {
System.out.println("push" + (i + 1) + "");
stringMyStack.push((i + 1) + "");
}
for (int i = 90; i > 0; i--) {
System.out.println("pop" + stringMyStack.pop());
}
}
}
正文完